package cc.mrbird.febs.common.utils;

import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;

public class DesensitizedUtils {

    /**
     * 【身份证号】显示最后四位，其他隐藏。共计18位或者15位，比如：*************1234
     *
     * @param id
     * @return
     */
    public static String idCardNum(String id) {
        if (StringUtils.isBlank(id)) {
            return "";
        }
        String num = StringUtils.right(id, 4);
        return StringUtils.leftPad(num, StringUtils.length(id), "*");
    }

    /**
     * 【手机号码】前三位，后四位，其他隐藏，比如135******10
     *
     * @param num
     * @return
     */
    public static String mobilePhone(String num) {
        if (StringUtils.isBlank(num)) {
            return "";
        }
        return StringUtils.left(num, 3).concat(StringUtils.removeStart(StringUtils.leftPad(StringUtils.right(num, 2), StringUtils.length(num), "*"), "***"));
    }

    /**
     * 【地址】只显示到地区，不显示详细地址，比如：北京市海淀区****
     *
     * @param address
     * @param sensitiveSize 敏感信息长度
     * @return
     */
    public static String address(String address, int sensitiveSize) {
        if (StringUtils.isBlank(address)) {
            return "";
        }
        int length = StringUtils.length(address);
        return StringUtils.rightPad(StringUtils.left(address, length - sensitiveSize), length, "*");
    }
    /**
     * 【政治面貌】 全部用****表示
     *
     * @param politics
     * @return
     */
    public static String politics(String politics) {
        if (StringUtils.isBlank(politics)) {
            return "";
        }
        int length = StringUtils.length(politics);
        return StringUtils.rightPad(StringUtils.left(politics, 0), length, "*");
    }
    /**
     * 【文化程度】全部用****表示
     *
     * @param culture
     * @return
     */
    public static String culture(String culture) {
        if (StringUtils.isBlank(culture)) {
            return "";
        }
        int length = StringUtils.length(culture);
        return StringUtils.rightPad(StringUtils.left(culture, 0), length, "*");
    }
    /**
     * 【收入】用*****表示
     *
     * @param income
     * @return
     */
    public static BigDecimal income(String income) {
        return BigDecimal.valueOf(Long.valueOf(income));
    }

}
